//立即执行函数(IIFE)
//好处：可以避免对外部的变量造成污染
(function (window) {
    //声明Promise类
    class Promise {
        //executor表示的是执行器函数
        constructor(executor) {
            // 构造器中的this指向表示的是实例化对象

            // 添加状态
            this.PromiseState = 'pending'
            // 添加结果
            this.PromiseResult = undefined

            // 定义Resolve函数
            const _resolve = value => {
                this.PromiseState = 'fulfilled'
                this.PromiseResult = value
            }

            // 定义reject函数
            const _reject = value => {
                this.PromiseState = 'rejected'
                this.PromiseResult = value
            }

            try {
                // 调用执行器函数
                executor(_resolve, _reject)
            } catch (err) {
                _reject(err)
            }
        }
    }
    window.Promise = Promise
})(window)